import time
import ctypes
import sys
import os

def prevent_sleep():
    """防止系统进入睡眠和锁屏状态"""
    # 定义Windows API常量
    ES_CONTINUOUS = 0x80000000
    ES_SYSTEM_REQUIRED = 0x00000001
    ES_DISPLAY_REQUIRED = 0x00000002
    
    # 设置线程执行状态
    ctypes.windll.kernel32.SetThreadExecutionState(
        ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_DISPLAY_REQUIRED
    )
    
    print("防锁屏程序已启动，系统将不会自动锁屏或休眠")
    print("此窗口可以最小化，但不要关闭")
    print("要退出程序，请直接关闭此窗口或按Ctrl+C")
    
    try:
        while True:
            time.sleep(60)  # 每60秒维持一次状态
    except KeyboardInterrupt:
        print("\n程序正在退出...")
    finally:
        # 恢复系统默认电源管理行为
        ctypes.windll.kernel32.SetThreadExecutionState(ES_CONTINUOUS)
        print("已恢复系统默认电源设置")

if __name__ == "__main__":
    # 如果是打包后的exe，直接运行
    if getattr(sys, 'frozen', False):
        # 如果是exe文件，改变当前目录到exe所在目录
        os.chdir(os.path.dirname(sys.executable))
    
    prevent_sleep()